퍼플심_01_퍼플팀 시뮬레이터 기획
막막함의 벽을 넘어서
기존의 CTF 사이트나, VM을 직접 구축해 실습해야 하는 Cyber Range(훈련장)들을 보며 늘 하던 생각이 있었다.
학습자에게 '환경'만 덩그러니 제공한다는 것이다.
"여기 리눅스랑 타겟 서버 있으니까, 배운 대로 해킹해봐."
당연한 것이겠지만 초보자 입장에선 막막하다.
nmap을 쓰라는데 옵션은 뭘 넣어야 하는지, 결과가 나왔는데 이게 무슨 의미인지, 다음엔 뭘 해야 하는지...
기본 적인 것은 알려주지만 스스로 생각하며 답을 찾는 비중이 좀 더 크다.
(물론 그게 중요하다는 것에는 반박할 여지가 없긴 하다....)
하지만 입문 단계에서는 '따라 하면서 흐름을 익히는 경험'이 더 절실하다고 생각했다.
전 직장의 경험
예전 한빛미디어 IT활용서팀에서 기획자로 일하며 느꼈던 것 중에 하나는,
생각보다 많은 사람이 툴 등의 활용 방식을 제대로 이해하지 못한다는 것이다.
젊은 사람들의 질문 전화를 받다 보면, 디지털 네이티브라며? 어떻게 이걸 모르지? 하는 생각이 절로 든다.
생각보다 더 모르고, 생각보다 더 '어떻게 활용할지' 모르는 것.
백날 천날 명령어를 외우고, 공격 기법을 외워도
비숙련자는 이를 어느 시점에 적용하고 활용해야 하는지 모른다는 것이다.
보통 학습 도구를 설계하는, 숙련자들이 가진 맹점이 이것이다.
나는 기획자로 일하며 이 부분을 책으로 만들어내는 일을 했기 때문에,
현재 정보보호 분야의 공부를 하면서 이 부분의 부족함을 여실히 느낄 수 있었다.
숙련자에게는 불필요한 친절이라고 느껴지겠지만,
초보자에게는 이런 '가이드된 성공 경험'이 필수적이다.
그래서 여기서 착안했다.
명령어 하나하나를 고민하게 만드는 것도 좋지만 일단 전체 해킹/대응의 워크플로우를 완주하게 만드는 것.
그 과정에서 "아, 실제로는 이런 상황에 이런 흐름으로 작업하는구나"를 자연스럽게 체득하게 하는 것이 목표다.
핵심 컨셉은 '시뮬레이션'
이 프로젝트의 핵심 키워드는 '시뮬레이션'이다.
진짜 해킹 툴(Kali Linux)을 그대로 웹에 옮겨놓는 게 목표가 아니다.
그렇다고 너무 게임처럼 단순화시키는 것도 아니다.
'실무의 리얼함'과 '게임의 편의성'사이에서 줄다리기를 잘해야 한다.
- 실제 터미널과 코드를 써야 하지만, 충분한 가이드와 힌트가 제공된다.
- 실제 해킹은 아니지만, 해킹했을 때의 결과 화면은 똑같이 보여준다.
- 지엽적인 툴 사용법(Option 암기)보다는, 전체 판을 읽는 흐름(Context)을 익히는 데 집중한다.
- 이를 위해 정의된 단계 하에서 작업해야 하는 것들을 가이드한다.
하나의 시나리오에서 두 가지 경험
하나의 시나리오(예: React2Shell)를 두고, 두 가지 관점을 플레이할 수 있게 구성한다.
- Red Team: 해커/레드팀 입장에서 이 취약점을 통해 공격을 제안하고 공격을 시도함.
- Blue Team: 기업 블루팀 입장에서 공격 로그를 발견, 이것이 무엇인지 판단하고 협업팀 커뮤니테이션, 어떻게 패치/후속 처리를 하는지 판단함.
서로 연동되는 것은 '시나리오의 서사'뿐이다. 시스템적으로는 독립된 경험이다.
Red Team 모드에서 내가 명령어를 쳤다고 해서,
Blue Team 모드의 로그에 실시간으로 반영되지는 않는다.
레드팀 업무가 궁금하면 레드팀으로 플레이하고, 블루팀 업무가 궁금하면 블루팀으로 플레이하면 된다.
기술 스택
웹 브라우저 하나로 모든 경험을 제공하기 위해 가볍고 빠른 스택을 선택했다.
- Next.js 14: 빠르고 견고한 웹 프레임워크.
- Tailwind CSS: 그럴싸한 '해커 UI'를 빠르게 구현하기 위해.
- Zustand: 복잡한 상태 관리를 위해 선택했지만, 과하게 쓰지 않도록 주의해야겠다.
거창한 기술보다는 '어떤 경험을 줄 것인가'에 집중해서 시작할 것이다.